﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="Request.cs" company="XamlmNinja">
//   2010
// </copyright>
// --------------------------------------------------------------------------------------------------------------------

namespace Communications.PropertySearch.Resources
{
    using System.Xml.Serialization;
    using Newtonsoft.Json;

    [JsonObject(MemberSerialization.OptIn)]
    [XmlTypeAttribute(TypeName = "request")]
    public sealed class Request
    {
        public Request(){}

        [JsonProperty("action")]
        [XmlAttribute(AttributeName = "action")]
        public string Action { get; set; }

        [JsonProperty("country")]
        [XmlAttribute(AttributeName = "country")]
        public string Country { get; set; }

        [JsonProperty("encoding")]
        [XmlAttribute(AttributeName = "encoding")]
        public string Encoding { get; set; }

        [JsonProperty("keywords_exclude")]
        [XmlAttribute(AttributeName = "keywords_exclude")]
        public string ExcludeKeywords { get; set; }

        [JsonProperty("withimage_only")]
        [XmlAttribute(AttributeName = "withimage_only")]
        public string ExcludeResultsWithoutImage { get; set; }
        
        [JsonProperty("guid")]
        [XmlAttribute(AttributeName = "guid")]
        public string Guid { get; set; }

        [JsonProperty("keywords")]
        [XmlAttribute(AttributeName = "keywords")]
        public string IncludeKeywords { get; set; }

        [JsonProperty("language")]
        [XmlAttribute(AttributeName = "language")]
        public string Language { get; set; }

        [JsonProperty("listing_type")]
        [XmlAttribute(AttributeName = "listing_type")]
        public string ListingType { get; set; }

        [JsonProperty("location")]
        [XmlAttribute(AttributeName = "location")]
        public string Location { get; set; }

        [JsonProperty("bedroom_max")]
        [XmlAttribute(AttributeName = "bedroom_max")]
        public string MaximumNumberOfBedrooms { get; set; }

        [JsonProperty("bathroom_max")]
        [XmlAttribute(AttributeName = "bathroom_max")]
        public string MaximumNumberOfBathrooms { get; set; }

        [JsonProperty("bathroom_min")]
        [XmlAttribute(AttributeName = "bathroom_min")]
        public string MinimumNumberOfBathrooms { get; set; }

        [JsonProperty("room_max")]
        [XmlAttribute(AttributeName = "room_max")]
        public string MaximumNumberOfRooms { get; set; }

        [JsonProperty("room_min")]
        [XmlAttribute(AttributeName = "room_min")]
        public string MinimumNumberOfRooms { get; set; }

        [JsonProperty("price_max")]
        [XmlAttribute(AttributeName = "price_max")]
        public string MaximumPrice { get; set; }

        [JsonProperty("bedroom_min")]
        [XmlAttribute(AttributeName = "bedroom_min")]
        public string MinimumNumberOfBedrooms { get; set; }

        [JsonProperty("price_min")]
        [XmlAttribute(AttributeName = "price_min")]
        public string MinimumPrice { get; set; }

        [JsonProperty("offset")]
        [XmlAttribute(AttributeName = "offset")]
        public int Offset { get; set; }

        [JsonProperty("output")]
        [XmlAttribute(AttributeName = "output")]
        public string Output { get; set; }

        [JsonProperty("page")]
        [XmlAttribute(AttributeName = "page")]
        public int Page { get; set; }

        [JsonProperty("pretty")]
        [XmlAttribute(AttributeName = "pretty")]
        public string Pretty { get; set; }

        [JsonProperty("product_type")]
        [XmlAttribute(AttributeName = "product_type")]
        public string ProductType { get; set; }

        [JsonProperty("property_type")]
        [XmlAttribute(AttributeName = "property_type")]
        public string PropertyType { get; set; }

        [JsonProperty("num_res")]
        [XmlAttribute(AttributeName = "num_res")]
        public int ResultsCount { get; set; }

        [JsonProperty("sort")]
        [XmlAttribute(AttributeName = "sort")]
        public string Sort { get; set; }

        [JsonProperty("version")]
        [XmlAttribute(AttributeName = "version")]
        public string Version { get; set; }

        [JsonProperty("radius")]
        [XmlAttribute(AttributeName = "radius")]
        public string Radius { get; set; }

        [JsonProperty("northeast")]
        [XmlAttribute(AttributeName = "northeast")]
        public string NorthEast { get; set; }

        [JsonProperty("southwest")]
        [XmlAttribute(AttributeName = "southwest")]
        public string SouthWest { get; set; }
    }
}
